package com.coderg.gmall.product.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.coderg.gmall.model.product.*;

import java.util.List;
import java.util.Map;

/**
 * @description: 一级目录
 * @author：coderG
 * @date: 2025/5/18
 */
public interface ManageService {
    /**
     * 查找全部一级目录
     *
     * @return
     */
    public List<BaseCategory1> findCategory1();

    /**
     * 通过一级目录id查找二级目录
     *
     * @param category1Id
     * @return
     */
    public List<BaseCategory2> findCategory2(Long category1Id);

    /**
     * 通过er级目录id查找san级目录
     *
     * @param category2Id
     * @return
     */
    public List<BaseCategory3> findCategory3(Long category2Id);

    /**
     * 保存平台属性和值
     *
     * @param listMap
     */
    public void saveAttrInfoAndValue(Map<String, Object> listMap);

    /**
     * 获取平台属性
     *
     * @param category3Id
     * @return
     */
    public List<BaseAttrInfo> getAttrInfoList(Long category3Id);

    /**
     * 根据平台属性id获取平台属性和属性值
     *
     * @param id
     * @return
     */
    public BaseAttrInfo getAttrValueListById(Long id);

    /**
     * 获取spu分页列表
     *
     * @param page
     * @param limit
     * @param category3Id
     * @return
     */
    public Page getSpuPage(Long page, Long limit, Long category3Id);

    /**
     * 获取商品品牌
     *
     * @return
     */
    public List<BaseTrademark> getTrademarkList();

    /**
     * 获取销售属性
     *
     * @return
     */
    public List<BaseSaleAttr> getBaseSaleAttrList();

    /**
     * 保存spuInfo
     * @param spuInfo
     */
    void saveSpuInfo(SpuInfo spuInfo);

    /**
     * 通过spuId查询 SpuSaleAttr
     * @param spuId
     * @return
     */
    List<SpuSaleAttr>getSpuSaleAttr(Long spuId);

    /**
     * 通过spuId查询 SpuImage
     * @param spuId
     * @return
     */
    List<SpuImage> getSpuImageListBy(Long spuId);

    /**
     * 保存sku
     * @param skuInfo
     */
    void saveSkuInfo(SkuInfo skuInfo);

    /**
     * skuInfo分页查询
     * @param page
     * @param limit
     * @return
     */
    IPage getSkuInfoPage(Long page, Long limit);

    /**
     * 上下架商品
     * @param skuId
     * @param mark
     */
    public void upOrDown(Long skuId,Short mark);

}
